package com.dilean.api.model;

import java.util.Collection;
import java.util.List;

public interface AttributeValueFactory
{
    /**
     * 
     * @param <T>
     * @param personId
     * @param attrId
     * @param type
     * @param params is an array of data to create a value. Each Object[] is {LIST_VALUE_ID, VALUE, DATE}
     * @return
     */
    public <T> AttributeValue<T> createValue(Integer personId, Integer attrId, List<Object[]> params);

    /** 
     * @param params is an array of data to create a value. Each Object[] is {LIST_VALUE_ID, VALUE, DATE, ATTR_ID}
     * @param personId
     * @param resultList
     * @return
     */
	public <T> Collection<AttributeValue<T>> createValues(Integer personId, List<Object[]> resultList);

	public <T> AttributeValue<T> createValueFromString(Integer personId, Integer attrId, Object param);

}
